// 自己定义：保存token
// 导入获取token的方法
import { getToken, setToken, removeToken } from '@/utils/auth'

// 导入网络请求
import { loginApi } from '@/api/user'

const state = {
  // 保存token
  token: getToken() //如果在 Cookies 中已经有了，直接读取出来
}

const mutations = {
  // 保存token
  SET_TOKEN (state, payload) {
    // 只是将token保存在内存中：刷新之后就没了
    state.token = payload
    // 还要保存在cookies中
    setToken(payload)
  },
  // 清除token
  REMOVE_TOKEN (state, payload) {
    // 清楚内存中的token
    state.token = ''
    // 清楚cookies中的token
    removeToken()
  }
}

const actions = {
  // 保存token
  async login (context, payload) {
    // 请求登录的接口，得到返回的token，保存token
    const res = await loginApi(payload)
    context.commit('SET_TOKEN', res.data.data)
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
